package repo

import (
	"context"

	"algo-sdk-go/project/matchmaking/adapter/dal"
	"algo-sdk-go/project/matchmaking/domain/models/entity"
	"algo-sdk-go/project/matchmaking/domain/port/repo/ops"

	"github.com/google/wire"
)

var UserProfileRepoSet = wire.NewSet(
	dal.NewUserProfileRepository,
	wire.Bind(new(UserProfileRepo), new(*dal.UserProfileDal)),
)

type UserProfileRepo interface {
	Save(context.Context, *entity.UserProfile) (userNum int, err error)
	Modify(context.Context, *entity.UserProfile) (err error)

	LoadUserProfileByUserNums(ctx context.Context, userNumList []int) ([]entity.UserProfile, error)
	LoadUserProfileByCondition(context.Context, ops.Condition) ([]entity.UserProfile, error)
	CountUserProfileByCondition(context.Context, ops.Condition) (int, error)
}
